/**
 * Clase Parentesis.java
 * @author Paola Garcia 10205, Diego Yon 10070, Claudia Grajeda 10118
 * Algoritmos y estructura de datos
 * Fecha de entrega: 21 noviembre 2011
 */


/**
	 * Clase constructora
	 * @param ins
	 * @param parentesis
	 */
public class Parentesis {
	public String instruccion;
	public int operaciones, operaciones2, inicio, ultimo;
	public String resultado;
	public char[] cadena;
	public int pos_ope = 0;
	public Operacion operacion;
	
	public Parentesis(String ins, int parentesis){
		instruccion = ins;
		operaciones = operaciones2 = parentesis;
		cadena = new char [instruccion.length()];
		cadena = instruccion.toCharArray();
	}
	
	
	/**
	 * Metodo que separa todos los parentesis ingresados por el usuario
	 * @return String
	 */
	
	public String instruccion_unica(){
		int pos;
		
			for (pos =(instruccion.length()-1); pos > 0; pos--){
				if (cadena[pos] == ')'){
					operaciones--;
					if(operaciones == 0){
						ultimo = pos;
						pos = 0;
					}
				}
			}
			
			for (pos = ultimo; pos > 0; pos--){
				if (cadena[pos] == '('){
					inicio = pos++;
					pos = 0;
				}
			}
			//(+ (+ 1 1) (+ 1 (+ 1 1)))
			//System.out.println("instruccion a operar: ");
			instruccion.substring(inicio, ultimo++);
			
			operacion = new Operacion(instruccion.substring(inicio,ultimo++));
			resultado = operacion.resultado();
			
			operaciones = operaciones2--;
			operaciones2 = operaciones;
			if (instruccion.substring(ultimo--).startsWith("(") ){
				instruccion = instruccion.substring(0,inicio--) + resultado + instruccion.substring(ultimo--);
			}
			else{
				instruccion = instruccion.substring(0,inicio--) + resultado + instruccion.substring(ultimo);
			}
		return instruccion;
	}
}
